/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wasolicitudesfiec.logicacontrol.SolicitarSerAyudante;

import entidad.ayudantias.Solicitudayudantia;
import entidad.ayudantias.Solicitudserayudante;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.FacesContext;
import wasolicitudesfiec.Ayudantias.SolicitarSerAyudante.HistorialSolicitarSerAyudante;
import wasolicitudesfiec.general.MensajeException;
import wasolicitudesfiec.logicacontrol.CTRL_Base;
import web.util.Constantes;
import wasolicitudesfiec.logicacontrol.LogicaHistorial;

/**
 *
 * @author kabad
 */
public class CTRL_HistorialSolicitarSerAyudante extends CTRL_Base {

    private HistorialSolicitarSerAyudante gui;
    LogicaHistorial logicaHistorial;

    public CTRL_HistorialSolicitarSerAyudante(HistorialSolicitarSerAyudante gui, FacesContext facesContext) {
        super(facesContext);
        this.gui = gui;
        String instancia;
        instancia = (String) externalContext.getRequestParameterMap().get("instancia");
        if (instancia != null) {
            externalContext.getSessionMap().put("instancia", instancia);
        }
    }

    public String getNombreInstanciaProceso() {
        String instancia;
        instancia = (String) externalContext.getSessionMap().get("instancia");
        return instancia;
    }

    public void inicializar() throws MensajeException {
        gui.getMenu().setTitulo(Constantes.Mensajes.detalleSolicitud);

        try {
            logicaHistorial = new LogicaHistorial();
            String actividad = externalContext.getRequestParameterMap().get("actividad");
            int idNodo = Integer.parseInt(externalContext.getRequestParameterMap().get("idNodo"));
            int idSolicitud = new Integer(logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.idSolicitudActividad));
            Solicitudserayudante solicitudserAyudante = logica.getLogAyudantia().leerSolicitudserayudanteNivel2(idSolicitud);
            Solicitudayudantia solicitud = logica.getLogAyudantia().leerSolicitudayudantiaNivel2(solicitudserAyudante.getFkIdSolicitudAyudantia());
            gui.getMenu().setTitulo("Actividad: " + actividad);
 String pattern = "dd/MM/yyyy";
        SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.applyPattern(pattern);


            if (Constantes.SolicitarSerAyudante.solicitarAyudantia.equals(actividad)) {
                gui.getPanelsolicitarSerAyudante().setRendered(true);
                gui.getPanelevaluarSerSolicitudAyudante().setRendered(false);
                gui.getPanelconfirmacionAyudantia().setRendered(false);
                gui.getPanelprorrogarConfirmacionAyudantia().setRendered(false);
                gui.getPanelcontratarAyudante().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);

            } else if (Constantes.SolicitarSerAyudante.revisarSolicitud.equals(actividad)) {
                gui.getPanelsolicitarSerAyudante().setRendered(false);
                gui.getPanelevaluarSerSolicitudAyudante().setRendered(true);
                gui.getPanelconfirmacionAyudantia().setRendered(false);
                gui.getPanelprorrogarConfirmacionAyudantia().setRendered(false);
                gui.getPanelcontratarAyudante().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);
            } else if (Constantes.SolicitarSerAyudante.configurarFechaConfirmacion.equals(actividad)) {
                gui.getPanelsolicitarSerAyudante().setRendered(false);
                gui.getPanelevaluarSerSolicitudAyudante().setRendered(false);
                gui.getPanelconfirmacionAyudantia().setRendered(false);
                gui.getPanelprorrogarConfirmacionAyudantia().setRendered(false);
                gui.getPanelcontratarAyudante().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(true);
                gui.getTextoMensajesSistema().setText("Actividad del Sistema: se ha configurado la fecha límite de recepción de confirmaciones: " +
                       sdf.format(solicitudserAyudante.getFechaMaxRecepcionConfirmacion()));
            } else if (Constantes.SolicitarSerAyudante.confirmarAceptacion.equals(actividad)) {
                gui.getPanelsolicitarSerAyudante().setRendered(false);
                gui.getPanelevaluarSerSolicitudAyudante().setRendered(false);
                gui.getPanelconfirmacionAyudantia().setRendered(true);
                gui.getPanelprorrogarConfirmacionAyudantia().setRendered(false);
                gui.getPanelcontratarAyudante().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);
            } else if (Constantes.SolicitarSerAyudante.prorrogarConfirmacion.equals(actividad)) {
                gui.getPanelsolicitarSerAyudante().setRendered(false);
                gui.getPanelevaluarSerSolicitudAyudante().setRendered(false);
                gui.getPanelconfirmacionAyudantia().setRendered(false);
                gui.getPanelprorrogarConfirmacionAyudantia().setRendered(true);
                gui.getPanelcontratarAyudante().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);
            }
            gui.setTextoConvocatoria(logica.getLogAyudantia().generarConvocatoria(solicitud));
            if (solicitud.getFechamodificacion() != null) {
                gui.getLblFecha().setText(solicitud.getFechamodificacion());
            }
            if (solicitud.getFkIdProfesor() != 0) {
                gui.getLblProfesor().setText(solicitud.getProfesor().getPersona().toString());
            }
            if (solicitud.getFkIdMateria() != 0) {
                gui.getTipoAyudantia().setText("académico de la materia ");
                gui.getNombreAyudantia().setText(solicitud.getMateria().getNombre());
            }
            if (solicitud.getFkIdAyudantiaVaria() != 0) {
                gui.getTipoAyudantia().setText("de la actividad varia ");
                gui.getNombreAyudantia().setText(solicitud.getAyudantiavaria().getNombre());
            }
            if (solicitud.getRequiereAdjunto()) {
                gui.getRequiereAdjuntos().setText("Archivo adjunto:");
                gui.getArchivoAdjunto().setText(solicitudserAyudante.getNombreArchivo());
                gui.getArchivoAdjunto().setUrl(Constantes.Rutas.rutaArchivos + solicitudserAyudante.getPathArchivoAdjunto().replaceAll(" ", "%20"));

            } else {
                gui.getRequiereAdjuntos().setText("La solicitud no requeria de archivos ajuntos.");
            }
            if (solicitudserAyudante.getHorasDisponibilidad() != 0) {
                gui.getHorasDisponibles().setText(solicitudserAyudante.getHorasDisponibilidad());
            }
            if ((solicitudserAyudante.getMensajeParaProfesor() == null) || solicitudserAyudante.getMensajeParaProfesor().equals("")) {
                gui.getComentariosEstudiante().setValue(Constantes.Mensajes.noComentarios);
            } else {
                gui.getComentariosEstudiante().setValue(solicitudserAyudante.getMensajeParaProfesor());
            }

            if (logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionRevision).equals(Constantes.Atributo.Decision.Cancelar.toString())) {
                gui.getEvaluacionProfesor().setText("Cancelar Solicitud");
                gui.getResultadoEvaluacion().setText("El profesor ha decidido cancelar la solicitud para contratación de ayudantes.");
            } else if (logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionRevision).equals(Constantes.Atributo.Decision.Aprobar.toString())) {
                gui.getEvaluacionProfesor().setText("Aprobar la solicitud.");
                gui.getResultadoEvaluacion().setText("Usted ha sido seleccionado para ser ayudante a " + solicitudserAyudante.getHorasContrato() + " horas. Debe confirmar si acepta o no la ayudantía hasta el " + 
                        sdf.format(solicitudserAyudante.getFechaMaxRecepcionConfirmacion()));
            } else if (logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionRevision).equals(Constantes.Atributo.Decision.Rechazar.toString())) {
                gui.getEvaluacionProfesor().setText("Rechazar la solicitud.");
                gui.getResultadoEvaluacion().setText("Si solicitud no ha sido favorecida");
            }
            if (solicitudserAyudante.getRespuestaConfirmacion() != null) {
                if (solicitudserAyudante.getRespuestaConfirmacion().equals(Constantes.Atributo.DecisionConfirmacion.Aceptar.toString())) {
                    gui.getConfirmacion().setText("ha aceptado la ayudantía. ");
                }
                if (solicitudserAyudante.getRespuestaConfirmacion().equals(Constantes.Atributo.DecisionConfirmacion.Rechazar.toString())) {
                    gui.getConfirmacion().setText("ha rechzado la ayudantía. Por lo tanto ya no es parte del concurso.");
                }
                if (solicitudserAyudante.getRespuestaConfirmacion().equals(Constantes.Atributo.DecisionConfirmacion.NoContestar.toString())) {
                    gui.getConfirmacion().setText("no ha confirmado si acepta o no la ayudantía.");
                }
            }
            if (logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionProrrogar).equals(Constantes.Atributo.DecisionProrrogar.Prorrogar.toString())) {
                gui.getFechaConfirmacion().setText("El profesor ha decidido dar una prórroga para recibir la confirmación de si el estudiante acepta o no la ayudantía, la Fecha límite para recibir la contestación es: " +
                        sdf.format(solicitudserAyudante.getFechaMaxRecepcionConfirmacion()));
            }
            if (logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionProrrogar).equals(Constantes.Atributo.DecisionProrrogar.NoProrrogar.toString())) {
                gui.getFechaConfirmacion().setText("El profesor ha decidido no prorrogar el período de confirmación, y contratar a los estudiantes confirmados.");
            }
            if (logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionProrrogar).equals(Constantes.Atributo.DecisionProrrogar.Cancelar.toString())) {
                gui.getFechaConfirmacion().setText("El profesor ha decidido cancelar la solicitud.");
            }
            if (logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionProrrogar).equals(Constantes.Atributo.DecisionProrrogar.RealizarNuevaSeleccion.toString())) {
                gui.getFechaConfirmacion().setText("El profesor ha decidido realizar una nueva selección de ayudantes. ");
            }
        } catch (SQLException ex) {
            Logger.getLogger(CTRL_HistorialSolicitarSerAyudante.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
